/*
 * Classe de entidade Professor extendida da classe Pessoa
 */
package amanda_gabriel_isabella_lucivania_monica.Model.Pojo;

import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;

/**
 * Entidade Professor
 *
 * @author monica
 *
 */
@Entity
@Table(name = "Professor")
@PrimaryKeyJoinColumn(name = "fk_id_pessoa", referencedColumnName = "id_pessoa")
public class Professor extends Pessoa {

    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    private String departamento;
    @ManyToMany//(targetEntity = amanda_gabriel_isabella_lucivania_monica.Model.Pojo.Disciplina.class,cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(name = "Professor_Turma",
    joinColumns = {
        @JoinColumn(name = "professor_id")},
    inverseJoinColumns = {
        @JoinColumn(name = "turma_id")})
    @JoinColumn(name = "turma_id")
    private List<Turma> turmas = new ArrayList<Turma>();

    /**
     * Construtor sem parâmetros de Professor
     */
    public Professor() {
    }

    /**
     * Construtor com parâmetros de Professor
     *
     * @param nome
     * @param cpf
     * @param departamento
     */
    public Professor(String nome, String cpf, String departamento) {
        super(nome, cpf);
        this.departamento = departamento;
    }

    /**
     * Retorna o departamento
     *
     * @return
     */
    public String getDepartamento() {
        return departamento;
    }

    /**
     * Seta o departamento
     *
     * @param departamento
     */
    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    /**
     * Retorna uma String contendo informações gerais de Professor
     *
     * @return
     */
    @Override
    public String toString() {
        return ("Nome: " + this.getNome() + "      CPF: " + this.getCpf() + "     Departamento: " + this.getDepartamento());
    }
}
